﻿/*************************************************************************************
 * 文 件 名:   HK_TaskModel
 * 
 * 描    述:   HK_TaskModel 任务管理系统的数据层，方便后期开发任务Query相关功能
 *                   
 * 版    本：   V1.0
 * 创 建 者：   京产肠饭
 * 创建时间：   2023/4/3
 * 链    接：   https://gitee.com/JingChanChangFan/hk_-unity-tools
*************************************************************************************/

using System.Collections.Generic;
using QFramework;

namespace HKTools
{
    public interface IHK_TaskModel : IModel
    {
        // 完成过的任务
        List<HK_Task> FinishedTasks { get; set; }

        // 达成过的条件
        List<HK_ConditionType> AchieveConditions { get; set; }

        // 当前任务链
        HK_TaskList CurTaskList { get; set; }

        // 当前任务链名称
        string CurTaskListName { get; set; }

        // 当前任务索引
        int TaskIndex { get; set; }

        // 当前任务
        HK_Task CurTask { get; set; }
    }

    public class HK_TaskModel : AbstractModel, IHK_TaskModel
    {
        // 完成过的任务
        public List<HK_Task> FinishedTasks { get; set; } = new List<HK_Task>();

        // 达成过的条件
        public List<HK_ConditionType> AchieveConditions { get; set; } = new List<HK_ConditionType>();

        HK_TaskList taskList;
        public HK_TaskList CurTaskList
        {
            get { return taskList; }
            set
            {
                if (taskList != null)
                {
                    foreach (var task in CurTaskList.list)
                    {
                        task.isOn = false;
                        task.isFinished = false;

                        for (int i = 0; i < task.conditions.Count; i++)
                        {
                            task.conditions[i].isFinish = false;
                        }
                    }
                }

                CurTask = null;
                FinishedTasks = new List<HK_Task>();
                AchieveConditions = new List<HK_ConditionType>();

                TaskIndex = 0;
                taskList = value;
            }
        }

        public int TaskIndex { get; set; }

        public HK_Task CurTask { get; set; }

        public string CurTaskListName { get; set; }

        protected override void OnInit()
        {

        }
    }
}